package com.example.demo.encode;

public class AesCipherUtil {

    /*
     *  用于计算 随机key 的数据 ;
     *  在js的前端使用时，不建议作为变量保存。 应当避免hack感知并获取到该变量
     *  这里只是由于代码编写原因而直接作为使用，仅作为模拟数据存储的位置。
     *  本文件外部不直接使用该变量。 因此可以根据需要进行修改。
     **/
    private RandomData randomData = null;

    /*********************************************************************************
       *Function:  	saveRandomData
       *Description：  将 用于计算随机key 的数据保存起来。需要保证能够在解密端获取到。
     这里推荐保存在cookie里面
     请实现该函数！
       *Input:  		RANDOM_S* data
       *Output:  
       *Return:  	VOID
       *Others:  
     *CreatBy: 	chendz
     *Modify:
     **********************************************************************************/
    public void saveRandomData(RandomData data) {
        randomData = data;
    }

    /*********************************************************************************
       *Function:  	getRandomData
       *Description：  将 用于计算随机key 的数据读取出来，需要保证与加密端保存的数据一致。
     这里加密端推荐保存在cookie里面，解密端直接从cookie里面获取数据。
     如果获取不到，则认为为第一次获取数据。
     请实现该函数！
       *Input:  		RANDOM_S* data
       *Output:  
       *Return:  	VOID
       *Others:  
     *CreatBy: 	chendz
     *Modify:
     **********************************************************************************/
    public RandomData getRandomData() {
        /* 请确保该类 返回值不为空  且下列参数有值 时间戳由函数生成
         * private int cnt;		  //为数字
         * private String userId;	  //用户的ID
         * private String sessionId;
         * private String random;
         */
        if (null == randomData) {
            randomData = new RandomData();
            randomData.setUserId(this.getUserId());
            randomData.setSessionId(this.getSessionId());
            randomData.setRandom(this.getRandom());
            randomData.setCnt(0);
        }

        return randomData;
    }

    public RandomData getRandomDataForMeeting() {
        /* 请确保该类 返回值不为空  且下列参数有值 时间戳由函数生成
         * private int cnt;		  //为数字
         * private String userId;	  //用户的ID
         * private String sessionId;
         * private String random;
         */
        if (null == randomData) {
            randomData = new RandomData();
            randomData.setUserId(this.getUserId());
            randomData.setSessionId(this.getSessionId());
            randomData.setRandom(this.getRandom());
            randomData.setCnt(0);
            randomData.setTimestamp("20190505152030");
        }

        return randomData;
    }

    /*********************************************************************************
       *Function:  	getUserId
       *Description：  获取用户的ID，在行内表现为工号。
     如果无法获取到，建议填写能够代表该用户的其他值。只要是字符串即可。
       *Input:  		无
       *Output:  	无
       *Return:  	String
       *Others:  
     *CreatBy: 	chendz
     *Modify:
     **********************************************************************************/
    private String getUserId() {
        return "Administrator";
    }

    /*********************************************************************************
       *Function:  	getSessionId
       *Description：  会话的SeesionId
       *Input:  		无
       *Output:  	无
       *Return:  	CHAR*
       *Others:  
     *CreatBy: 	chendz
     *Modify:
     **********************************************************************************/
    private String getSessionId() {
        return "DKJHASBGHNDKFNA";
    }

    /*********************************************************************************
       *Function:  	getRandom
       *Description：  获取自定义的随机数据。可根据情况进行填写。
     建议使用。如果不使用，请返回 空字符串如：""
       *Input:  		无
       *Output:  	无
       *Return:  	CHAR*
       *Others:  
     *CreatBy: 	chendz
     *Modify:
     **********************************************************************************/
    private String getRandom() {
        return "";
    }
}
